home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Texty / crackme / UCL-JMPC.TXT < prev    next >
Encoding:
Text File  |  1998-01-05  |  4.1 KB  |  134 lines

  1. ─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-
  2. ■ JMP!CRACKME by |PSA|
  3.                 *crackyou*
  4. ─-─-─-─-─-─-─-─-[ Shaman ]─-─-─-─-─-─-─-─-
  5.             ▄▄   ▄ ▄▄▄▄▄▄ ▄▄              
  6.          ·──▄▄───█─▄▄─────▄▄────·         
  7.          ·──██▌──█─██▌────██▌───·         
  8.          ·──██▌──█─██▌────██▌───·         
  9.             ▀▀ ▀▀▀ ▀▀▀▀▀▀ ▀▀▀▀▀▀          
  10. ─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-
  11.        ■ United Crackers League ■         
  12. [WIN95]─-─-─-─-─-─-─-─-─-─-─-─-─-─[Jan 98]
  13.          E-mail: whshaman@iname.com       
  14.          Fido  : 2:5064/3.5@fidonet       
  15. ─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-─-
  16.  
  17.  
  18.  
  19. How to crack this "crackme":
  20.  
  21. 1. Find this code:
  22.  
  23.  00000000: B409          mov    ah,009
  24.  00000002: BA2A01        mov    dx,0012A
  25.  00000005: CD21          int    021         ; write copyrights
  26.  00000007: B40A          mov    ah,00A
  27.  00000009: BAFF04        mov    dx,004FF    ; input 4-symbols password
  28.  0000000C: CD21          int    021
  29.  0000000E: 8B1E0305      mov    bx,[00503]  ; in [503] our password (2 last bytes)
  30.  00000012: BEE704        mov    si,004E7    ; at this address some crypted data
  31.  00000015: 8BFE          mov    di,si
  32.  00000017: B90C00        mov    cx,0000C    ; counter, 12 words
  33.  0000001A: AD            lodsw
  34.  0000001B: D3C0          rol    ax,cl
  35.  0000001D: 33C3          xor    ax,bx        ; crypt code and store back,
  36.                                             ; in bx _always_ 2 last symbols
  37.                                             ; of our password hehe
  38.  0000001F: 02D0          add    dl,al       ; checksum
  39.  00000021: AB            stosw              ; store back decrypted word
  40.  00000022: E2F6          loop   00000001A
  41.  00000024: 80EA68        sub    dl,068      ; checking checksum
  42.  00000027: 7431          je     00000005A   ; all right, then going to 5a...
  43.  00000029: C3            retn
  44.  
  45.  
  46.  
  47. 2. I write 1-st program (1.pas), to calculate all accessable passwords,
  48. password is xxYx, when y is one of following symbols:
  49.  
  50. $10, $1c, $70, $7c, $90, $9c, $f0, $fc, 
  51. ' ', ' ', 'p', '|', 'É', '£', '≡', 'ⁿ'
  52.  
  53.  
  54. but PSA say what all symbols in password is typeable (i think what it's from
  55. region $20-$ff ;-), then calculating this passwdords for one from $70...$fc
  56. we get 172032 combinations, for 6 first symbols we get finaly:
  57.  
  58.                         172032*6=1032192 combinations.
  59.  
  60. Uuuuh bad :(, ok, next step...
  61.  
  62.  
  63.  
  64. 3. Let's look at the crypter:
  65.  
  66.  00000017: B90C00        mov    cx,0000C    ; counter, 12 words
  67.  0000001A: AD            lodsw
  68.  0000001B: D3C0          rol    ax,cl
  69.  0000001D: 33C3          xor    ax,bx       ; kill (nops) this command 
  70.                                             ; in the debugger and get 'clear'
  71.                                             ; precrypted dump after loop...
  72.  0000001F: 02D0          add    dl,al
  73.  00000021: AB            stosw
  74.  00000022: E2F6          loop   00000001A
  75.  
  76. Was:
  77. 000004E7:  46 F8 6B F0 D6 1E 29 41-3D 38 6E 24 7D 75 C3 DA
  78. 000004F7:  65 87 9F A5 32 76 22 C9
  79.  
  80. New:
  81. 000004E7:  84 6F 83 5F 7B 58 82 52-38 3D 12 37 5D 5F 7B 58
  82. 000004F7:  58 76 FD 2C C9 D8 45 92
  83.  
  84. I write 2-nd prog (2.pas) for decrypting this new block with all accesable
  85. symbols (5 ones, for every accasable symbols, i use cycle from 1 to 0ffh,
  86. then look into logfile...)
  87.  
  88. In logfile i find this strings:
  89.  
  90. ...
  91. °= 
  92. ■Done!
  93. $$ü~╡è9└
  94. ...
  95. ° -*■ DOnE!-*$ü^╡¬9α
  96. ...
  97.  
  98. Hehe, first string look so good :), now we can calculate 2 last
  99. symbols of password: 
  100.  
  101. 4. I patch my 2-nd program and calc xorbyte (2 last symbols of password)
  102. it's: |R
  103.  
  104. ok, i patch my 1-st prog and get 186 valid combinations, like:
  105.  
  106. ---cut---
  107.  p|R
  108.  q|R
  109.  s|R
  110. !p|R
  111. !q|R
  112. !r|R
  113. "q|R
  114. "r|R
  115. "s|R
  116. ...
  117. ---cut---
  118.  
  119. 5. Run jmp!crk and... after ~20 min (with 'fuck', 'shit' etc)
  120. i get this password:
  121.  
  122. .~|R
  123.  
  124. 6. After debugging i get "jmp ax" ax=2D0h, and try to calculate another
  125. valid password - nope, only this one.
  126.  
  127. All '■ Done!' :)
  128.  
  129. p.s. Tnx to PSA for good time, IRC chatting and JMP!Crackme of couse.
  130.  
  131.  ┌─ ├│/┤┌┬╖/┤╓┐    -─═[IHC]=[UCL]=[SDM]═-─ E-mail: whshaman@iname.com
  132. ───╜    │     │  [PGP B1 38 25 90 72 89 E6 74 60 DD AD 1B 63 26 D1 1E]
  133.  
  134.